#ifndef ANNULERREFAIRE_H
#define ANNULERREFAIRE_H

#include <QStack>
#include "elementhistorique.h"
#include "arbre.h"

class AnnulerRefaire
{
private:
    // l'arbre
    Arbre * monArbre;

    // les piles
    QStack<ElementHistorique *> pileAnnuler;
    QStack<ElementHistorique *> pileRefaire;

    void supprimerNoeud(Noeud * noeud);
    void ajouteUnNoeud(Noeud * nouveauNoeud);

public:
    AnnulerRefaire(Arbre * arbre);

    // permet d'annuler
    bool annuler();
    // permet de refaire
    bool refaire();

    void memoriser(Noeud * n, unsigned int type);

    // actions autorisees
    bool onPeutAnnuler();
    bool onPeutRefaire();
};

#endif // ANNULERREFAIRE_H
